﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using KPWeb.Class;
using KPWeb.Data;
using KPWeb.Function;

namespace KPWeb.Account
{
    public partial class Register : Page
    {
       // Boolean registerOK = false;
        //private string lLogin="";
        //private string lEmail = "";
        private static string generujHaslo(int liczbaZnakow)
        {
            Random r = new Random();
  
            string haslo = "!@#$%^&*()~+:?<>";
            string ch = haslo.Substring(r.Next(14), 1);
            string pw = Guid.NewGuid().ToString("N").Substring(0, liczbaZnakow-1);
            return (pw.Insert(r.Next(liczbaZnakow-2), ch));
        }
       
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Error1.Visible = false;
            using (ActiveDirectory.WorkflowActiveDirectoryClient ad = new ActiveDirectory.WorkflowActiveDirectoryClient())
            {
                string login = HttpContext.Current.User.Identity.Name;
                //  string login = "am\\michal.sztulpa";

                ActiveDirectory.UserInfo user = ad.GetUsersInfoByAcountName(login.Split('\\').Last());
                RegisterUser.UserName = user.AccountName;//domena
                RegisterUser.Email = user.Email;
            }
            if (!this.IsPostBack)
            {
                string hasloPocz = generujHaslo(8);

                string emailAdres = RegisterUser.Email;// "waldemar.sztulpa@wum.edu.pl";
                     //  string adresat = "wszt@wp.pl";
                     string temat = "Hasło początkowe do systemu KPWeb";
                     string tresc = hasloPocz;
                     if (Mail.SendMaila(emailAdres, temat, tresc) != 0) //  if (Mail.SendMaila(emailAdres, temat, tresc) != 0)//Temp wyrzucić
                     {
                         Error1.Text = "UWAGA: program KPWeb nie wysłał hasła początkowego, spróbuj ponownie się zarejestrować lub skontaktuj się z Administratorem ATJ";
                         Error1.Visible = true;
                        return;
                     }
                     else
                     {
                         UprawnieniaLogowanie.InsertUpdateRejestracjaHasloPoczatkowe(RegisterUser.UserName, RegisterUser.Email,
                                        Szyfrowanie.EncodePassword(hasloPocz).Trim(),Stale.uprMoje);
                     }

            }
            RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"];
         
        }

  
        
        
        
        protected void RegisterUser_CreatedUser(object sender, EventArgs e)
        {
            FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);

            string continueUrl = RegisterUser.ContinueDestinationPageUrl;
            if (String.IsNullOrEmpty(continueUrl))
            {
                continueUrl = "~/";
            
            }
            Response.Redirect(continueUrl);
        }
      
        
        
        protected void RegisterButton_Click(object sender, EventArgs e)
        {
            try
            {
                string st = this.RegisterUser.Email;
            string st1 = this.RegisterUser.Question; //haslo poczatkowe
            string st2 = this.RegisterUser.Answer; //Pesel
            string st3 = this.RegisterUser.Password;
         
                if (!FunctionGlobal.KontrolaPesel(st2))
                {
                    Error1.Text = "UWAGA: podany PESEL występuje już w bazie, spróbuj ponownie lub skontaktuj się z Koordynatorem";
                    this.Error1.Visible = true;
               
                    return;
                }
                if (Osoby.GetOsobaIDzKP_Osoby(st2) < 0)
                {
                    
                    Error1.Text = "UWAGA: nie podano lub wpisano PESEL z błędną sumą kontrolną";
                    Error1.Visible = true;
                   
                    return;
                }
                //##### todo
                if (!UprawnieniaLogowanie.HasloPoczatkoweOK(RegisterUser.UserName, st1))
                {
                    Error1.Text = "UWAGA: wprowadzone hasło początkowe jest inne niż wysłane przez system KPWeb na adres mailowy: " + RegisterUser.Email;
                    Error1.Visible = true;
                  
                    return;
                }
               //if (!FunctionGlobal.ValidatePassword(st3))  //### brak walidacji hasła
               // {
               //     Error1.Text = "UWAGA: błędne hasło! Poprawne powinno zawierac minimum 8 znaków w tym co najmniej jeden nie alfanumeryczny.";
               //     Error1.Visible = true;
                   
               //     return;
               // }


                int osobaID = Osoby.GetOsobaIDzKP_Osoby(st2);// ####Osoba nie może byc w dwóch jednostkach równocześnie zatrudniona
           // string stTemp = Szyfrowanie.EncodePassword(RegisterUser.UserName);
          
            if (osobaID > 0 )
            {
                //Current.OsobaID = osobaID.ToString();
                //Current.Uprawnienia = Stale.uprMoje;
                //Current.JednostkaID = Osoby.GetOsobaJednostkaID(osobaID).ToString();
                //vKP_JednostkiFirmy item = Model.GetJednostkaFirma(int.Parse(Current.JednostkaID));
                //Current.FirmaID = item.FirmaID.ToString();
                //Current.Login = RegisterUser.UserName;


                UprawnieniaLogowanie.InsertUpdateUprawnieniaRejestracja(
                    osobaID,
                    RegisterUser.UserName,//login
                    RegisterUser.Answer, //pesel
                    RegisterUser.Email.Trim(), //email
                    Szyfrowanie.EncodePassword(RegisterUser.Password.Trim()),//zaszyfrowane haslo docelowe
                    "",//haslo poczatkowe
                    Stale.uprMoje,
                    "f",//blokada konta
                    0,//liczbaBlednych
                    "t"//,string active)
                    );

                Server.Transfer("~/Account/LoginWUM.aspx");

            }
            }
            catch (Exception ex)
            {
            //    throw new Exception("Brak połaczenia z serwerem /////login:" + " xxxx" + " " + ex.Message);
            }

        }
      

        //protected void RegisterUser_CreateUserError(object sender, CreateUserErrorEventArgs e)//####
        //{
        //    if (e.CreateUserError == MembershipCreateStatus.InvalidPassword)
        //    {
        //        // If so change to dupe email error and set the literal
             
        //        this.Error2.Text = "UWAGA: błędne hasło! Poprawne powinno zawierac minimum 8 znaków w tym co najmniej jeden nie alfanumeryczny.";
        //        this.Error2.Visible = true;
        //        registerOK = false;
        //        return; 
   
        //    }

            
        //}
       

    }
}
